package com.cjkj.common.utils;

public class Int16Util {

    private Int16Util(){}

    /**
     * 将高低字节组合为有符号的short值（小端模式）
     * @param lowByte  低位字节（0x00~0xFF）
     * @param highByte 高位字节（0x00~0xFF）
     * @return 对应的十进制short值
     */
    public static short bytesToShort(byte lowByte, byte highByte) {
        return (short) ((highByte << 8) | (lowByte & 0xFF));
    }

    /**
     * 将short拆分为高低字节数组（小端模式）
     * @param value 输入的short值
     * @return byte[0]=低位, byte[1]=高位
     */
    public static byte[] shortToBytes(short value) {
        return new byte[] {
                (byte) (value & 0xFF),
                (byte) ((value >> 8) & 0xFF)
        };
    }

    /**
     * 测试用例
     */
//    public static void main(String[] args) {
//        // 示例：低位0x2A，高位0xFD -> -726
//        short result = bytesToShort((byte)0x2A, (byte)0xFD);
//        System.out.println(result); // 输出 -726
//
//        // 反向验证
//        byte[] bytes = shortToBytes((short)-726);
//        System.out.printf("低位: 0x%02X, 高位: 0x%02X\n", bytes[0], bytes[1]);
//    }

}

